﻿Public Class frmBalanceClients
    Private szSQL As String
    Private rs As ADODB.Recordset
    Private rs2 As ADODB.Recordset

    Private Sub frmBalanceClients_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        InitComboSocietes(CB_SOCIETE)
        InitComboPermis(CB_PERMIS)
        ' période = année en cours
        TE_DATE_DEBUT.Value = CDate(Now.Year.ToString & "/01/01")
    End Sub

    Private Sub TE_DATE_DEBUT_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TE_DATE_DEBUT.ValueChanged
        ' date de fin = date de début fin de mois
        TE_DATE_FIN.Value = TE_DATE_DEBUT.Value.AddMonths(12)
        TE_DATE_FIN.Value = TE_DATE_FIN.Value.AddDays(-1)
    End Sub

    Private Sub BO_IMPRIMER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_IMPRIMER.Click

        If DateDiff(DateInterval.Day, TE_DATE_DEBUT.Value, TE_DATE_FIN.Value) < 0 Then
            MsgBox("La date de fin doit être supérieure à la date début", MsgBoxStyle.Critical)
            Exit Sub
        End If

        ' RAZ la table T_G_LIVRE pour extraire les eleves de cet examen
        szSQL = "spDel_T_G_LIVRE('" & gUserCode & "')"
        ExecQuery(ctDSN_AEM, szSQL)

        Dim nb As Integer = 0

        Me.Cursor = Cursors.WaitCursor
        ' Lire tous les ELEVES non cloturés, inactif et dont le compte est positif
        szSQL = "SELECT * FROM ELEVES where agence > 0 AND societe='" & Mid(CB_SOCIETE.SelectedItem, 1, 1) & _
                "' AND permis_demande ='" & CB_PERMIS.SelectedItem & "'"
        GetRecordset(ctDSN_AEM, szSQL, rs)
        Do While Not rs.EOF
            Application.DoEvents()

            ' créer une ligne de balance
            szSQL = "CALL spINS_T_BALANCE('" & gUserCode & "','" & Mid(CB_SOCIETE.SelectedItem, 1, 1) & "'," & rs.Fields("agence").Value & ",'" & _
                     CB_PERMIS.SelectedItem & "'," & rs.Fields("cd_cli").Value & ",'" & Mid(nq(rs.Fields("nompren").Value), 1, 30) & "','" & _
                     rs.Fields("formule").Value & "','" & Format(TE_DATE_DEBUT.Value, "yyyy/MM/dd") & "','" & Format(TE_DATE_FIN.Value, "yyyy/MM/dd") & "')"
            GetRecordset(ctDSN_AEM, szSQL, rs2)
            ' une ligne créee ?
            If rs2.Fields("CREE").Value > 0 Then
                nb += 1
            End If
            rs.MoveNext()
        Loop
        rs.Close()
        Me.Cursor = Cursors.Default
        MsgBox(nb & " lignes de balance ont été créées !", MsgBoxStyle.Information)

        If nb > 0 Then
            rs2.Close()
            ' imprimer La balance Clients
            FrmViewReport.pCodeEtat = 13
            FrmViewReport.pParamRPT = "du " & Format(TE_DATE_DEBUT.Value, "dd/MM/yyyy") & " au " & Format(TE_DATE_FIN.Value, "dd/MM/yyyy")
            FrmViewReport.ShowDialog()
        End If

    End Sub

    Private Sub BO_IMPRIMER_GL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_IMPRIMER_GL.Click

        If DateDiff(DateInterval.Day, TE_DATE_DEBUT.Value, TE_DATE_FIN.Value) < 0 Then
            MsgBox("La date de fin doit être supérieure à la date début", MsgBoxStyle.Critical)
            Exit Sub
        End If

        ' RAZ la table T_G_LIVRE pour extraire les eleves de cet examen
        szSQL = "spDel_T_G_LIVRE('" & gUserCode & "')"
        ExecQuery(ctDSN_AEM, szSQL)

        Dim nb As Integer = 0

        Me.Cursor = Cursors.WaitCursor
        ' Lire tous les ELEVES non cloturés, inactif et dont le compte est positif
        szSQL = "SELECT * FROM ELEVES where agence > 0 AND societe='" & Mid(CB_SOCIETE.SelectedItem, 1, 1) & _
                "' AND permis_demande ='" & CB_PERMIS.SelectedItem & "'"
        GetRecordset(ctDSN_AEM, szSQL, rs)
        Do While Not rs.EOF
            Application.DoEvents()

            ' créer une ligne de balance
            szSQL = "CALL spINS_T_GD_LIVRE('" & gUserCode & "','" & Mid(CB_SOCIETE.SelectedItem, 1, 1) & "'," & rs.Fields("agence").Value & ",'" & _
                     CB_PERMIS.SelectedItem & "'," & rs.Fields("cd_cli").Value & ",'" & rs.Fields("formule").Value & "','" & _
                     Format(TE_DATE_DEBUT.Value, "yyyy/MM/dd") & "','" & Format(TE_DATE_FIN.Value, "yyyy/MM/dd") & "')"
            GetRecordset(ctDSN_AEM, szSQL, rs2)
            ' une ligne créee ?
            If rs2.Fields("CREE").Value > 0 Then
                nb += rs2.Fields("CREE").Value
            End If
            rs.MoveNext()
        Loop
        rs.Close()
        Me.Cursor = Cursors.Default
        MsgBox(nb & " lignes de balance ont été créées !", MsgBoxStyle.Information)

        If nb > 0 Then
            rs2.Close()
            ' imprimer Le grand-livre Clients
            FrmViewReport.pCodeEtat = 14
            FrmViewReport.pParamRPT = "du " & Format(TE_DATE_DEBUT.Value, "dd/MM/yyyy") & " au " & Format(TE_DATE_FIN.Value, "dd/MM/yyyy")
            FrmViewReport.ShowDialog()
        End If

    End Sub
End Class